CloudTrailのログをExcelで(あまり頑張らずに)解析してみた
はじめに
AWSチームのすずきです。
AWS APIへのアクセスログ機能を提供するCloudTrail、そのログはJSON形式、多数のgz圧縮ファイルとしてS3上に保存されるため、 人による視認性は芳しくありません。
今回、CloudTrailのログを簡単に解析する方法として、MS-Officeのエクセルを利用する方法について紹介させて頂きます。
準備
- 「jq」コマンドの実行環境を準備します。
- 解析対象とするCloudTrailのログは、awscliなどを利用して転送済とします。Amazon Linux AMI 2014.09環境での実行例
sudo yum install jq S3_PATH="cm-XXXXX/AWSLogs/XXXXX/CloudTrail/ap-northeast-1/2014/XX/XX" WORK_DIR=/tmp/$$ mkdir -p ${WORK_DIR} cd ${WORK_DIR} aws s3 ls s3://${S3_PATH}/ aws s3 sync s3://${S3_PATH} ./
TSVファイルの作成
JSON形式のCloudTrailログファイルから、影響度が低いと思われる参照系の操作(Describe、List、Get)ログを除外し、タブ区切りのテキストに変換するスクリプトを用意しました。 こちらを実行します。
#!/bin/sh OUT_FILE='./out.tsv' echo 'eventTime|awsRegion|eventSource|eventName|userName|sourceIPAddress|userAgent|requestParameters|userIdentity' \ | sed 's/|/\t/g' > ${OUT_FILE} find . -name "*.json.gz" | xargs gunzip -c \ | jq '.Records[] | select(contains({eventName:"Describe"})|not) | select(contains({eventName:"List"})|not) | select(contains({eventName:"Get"})|not)' \ | jq -r '"\(.eventTime)|\(.awsRegion)|\(.eventSource)|\(.eventName)|\(.userName)|\(.sourceIPAddress)|\(.userAgent)|\(.requestParameters)|\(.userIdentity)"' \ | sed 's/|/\t/g' | sort -k 1,1 >> ${OUT_FILE} head -n 10 ${OUT_FILE}
エクセルで開く
作成されたTSVファイルは、scpなどを利用してエクセルが動作する端末にコピーし、タブ区切りのテキストファイルとして開きます。
まとめ
小中規模のAWSアカウント、期間や対象を限定した利用であれば、CloudTrailのログをエクセルのフィルタ機能などを用いて、簡単に解析する事が可能でした。
万一のセキュリティ事故が発生した際万全の対応をとるためにも、CloudTrail機能は有効化する事をお薦めします。